#ifdef _EVAL_UPMC_H_
#else

#define _EVAL_UPMC_H_
typedef enum kind_op {Plus, Moins, Fois, Divise, Puissance, Neg, Entier, Reel} kind_op;

typedef struct ast_st ast_st;

typedef struct nodesChilds {
  ast_st *left, *right;
} nodesChilds;


struct ast_st {
    enum kind_op op;
    union {
        nodesChilds childs;
        int num;
        double flo;
    };
};

void free_ast(ast_st* a);
ast_st* create_integer(int value);
ast_st* create_real(double value);
ast_st* create_node(kind_op op, ast_st* left, ast_st* right);
double eval(ast_st* ast);
int parseArithmetic (const char * arith);


#endif
